﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoData;
using Logica.Interfaces;

namespace Logica.Comandos.Cliente
{
    public class ComandoBuscarCliente:Comando,IConsultableLista 
    {
        #region Overrides of Comando

        public override void Ejecutar()
        {
            throw new NotImplementedException();
        }

        #endregion
        
        #region Metodos Apoyo
        
        /// <summary>
        /// retorno el valor numerico de la busqueda si es el caso de lo contrario regresa -1
        /// </summary>
        /// <param name="busqueda"></param>
        /// <returns></returns>
        private int ValorEnteroBusqueda(string busqueda)
        {
            try
            {
                return Convert.ToInt32(busqueda);
            }
            catch (Exception)
            {

                return -1;
            }
        }

        #endregion

        #region Implementation of IConsultableLista

        /// <summary>
        /// Obtiene una lista de cliente dado un parametro
        /// </summary>
        /// <param name="busqueda"></param>
        /// <returns></returns>
        public List<object> Ejecutar(object busqueda)
        {
            List<object> retorno = new List<object>();
            foreach (Entidades.Cliente cliente in 
                DAO.ObtenerFabrica(1).ObtenerDaoCliente().ObtenerClienteNombre((String) busqueda))
            {
                retorno.Add(cliente);
            }
            int numero = ValorEnteroBusqueda((String)busqueda);
            foreach (Entidades.Cliente cliente in 
                DAO.ObtenerFabrica(1).ObtenerDaoCliente().ObtenerClienteNumeroRif(numero))
            {
                retorno.Add(cliente);  
            }
            return retorno;
        }

        #endregion
    }
}
